Embodiments of the present invention relate to data storage. More particularly, embodiments of the present invention relate to cache coherency for non-volatile cache coupled to a mass storage device.
A computer can store data both in a volatile memory and a non-volatile mass storage device. Examples of volatile memory include, but are not limited to, dynamic random access memory (DRAM), static random access memory (SRAM), Rambus dynamic random access memory (RDRAM), etc. Examples of a non-volatile mass storage device include, but are not limited to, a hard disk drive, a 3.5-inch diskette, a 5.25-inch floppy diskette, a ZIP(copyright) disk (e.g., manufactured by Iomega Corporation of Roy, Utah), a Jaz(copyright) disk (e.g., manufactured by Iomega Corporation), an LS-120 Superdisk (e.g., manufactured by Imationxc2x0 Corporation of Oakdale, Minn.), a rewritable Digital Versatile Disc (DVD-RAM), a Read/Write Compact Disk (CD-RW), a magnetic mass storage device, an optical mass storage device, a magneto-optical mass storage device, a holographic storage device ect. Examples of data stored in a non-volatile memory of a computer include computer instructions (e.g., an operating system, one or more application programs, etc.) and data that is accessed by computer instructions.
When a volatile memory loses power, the data stored on the volatile memory is typically lost. Non-volatile mass storage devices, such as hard disk drives, typically do not lose the data stored thereon when the non-volatile mass storage device loses power (e.g., when power to the computer is turned off, due to a power outage, etc.). Non-volatile memory, however, generally has significantly greater access times for retrieval and storage of data as compared to volatile memory. Non-volatile memory is also typically less expensive than certain volatile memory such as DRAM, SRAM, RDRAM, etc.
In addition to volatile memory and non-volatile memory, a computer typically includes a processor that can perform operations based on instructions and data. Instructions and data to be operated on by the processor can be copied from the slower, non-volatile mass storage device (e.g., a hard disk drive, etc.) to the faster, volatile memory (e.g., a DRAM main memory, an SRAM cache, etc.) because the faster, volatile memory typically has a significantly lesser memory access time than the non-volatile mass storage device. Processor performance and computer performance can be enhanced when memory access times are reduced.
Because the memory access time for a non-volatile mass storage device (e.g., disk drive) is generally greater than the memory access time for the volatile memory (e.g., DRAM main memory, SRAM cache, etc.), the non-volatile mass storage device is often a performance bottleneck. Known disk drives include a volatile cache (e.g., a DRAM cache, an SRAM cache), but such volatile caches are typically part of the disk drive""s microcontoller""s main memory address space and thereby byte addressed (and not block addressed). In view of the foregoing, it can be appreciated that a substantial need exists for methods and apparatus which can enhance computer system performance.